#include "agent.hpp"
#include <iostream>

using namespace std;

int main() {
    dw::Agent agent;

    cout << "Empty Constructor" << endl;
    cout << agent << endl;
    cout << bool(agent) << endl;

    dw::Agent::State state;
    state.id = 10000;
    state.dRadius = 2;
    state.shape = dw::Agent::Shape::House;
    state.vDirection = {1, 1};
    state.dVelocity = 3.14;
    state.dAcceleration = 2.718;
    state.dOmega = 0.314;
    state.vPosition = {10, 10};

    cout << "Initialed Agent State" << endl;
    cout << state << endl;

    agent.set(state);

    cout << "set Agent State" << endl;
    cout << agent << endl;

    agent.setAcceleration(1);
    cout << "Using setAcceleration(int) function" << endl;
    cout << agent << endl;

    agent.setAcceleration({1, 1});
    cout << "Using setAcceleration(Vec) function with a same vec" << endl;
    cout << agent << endl;

    agent.setAcceleration({1, -1});
    cout << "Using setAcceleration(Vec) function with a perp vec" << endl;
    cout << agent << endl;

    agent.setVelocity(1);
    cout << "Using setVelocity(int) function" << endl;
    cout << agent << endl;

    agent.setVelocity({1, 0});
    cout << "Using setVelocity(Vec) function" << endl;
    cout << agent << endl;

    agent.setAcceleration({1, 1});
    cout << "Using setAcceleration(Vec) function with a 45 degree vec" << endl;
    cout << agent << endl;

    agent.Update(0.01);
    cout << "Update 0.01s" << endl;
    cout << agent << endl;

    return 0;
}